package org.summerframework.component.upload.fastdfs;

import java.io.InputStream;
import java.util.Map;

/**
 * fastdfs操作类
 *
 * @author 石超
 */
public interface FastdfsTemplate {
    /**
     * 上传流
     * <p/>
     * duboo服务不建议调用
     * 当时dubbo服务时,不能使用FileInputStream()
     *
     * @param fileInputStrem 流
     * @param fileExtName    后缀名
     * @param metaMap        fastdfs参数
     * @return
     */
    UploadResult uploadFileByInputStream(InputStream fileInputStrem, String fileExtName, Map<String, String> metaMap);

    /**
     * 已流的形式上传文件
     * <p/>
     * dubbo服务推荐
     *
     * @param fileBytes   byte流
     * @param fileExtName 文件后缀
     * @param metaMap     fastdfs参数
     * @return
     */
    UploadResult uploadFileByByte(byte[] fileBytes, String fileExtName, Map<String, String> metaMap);

    /**
     * 已文件形式上传
     * <p/>
     * 如果当前机器无法获取到该文件时,不可使用方法
     * 会出现FileNotFindException
     *
     * @param path    文件路径
     * @param metaMap fastdfs参数
     * @return
     */
    UploadResult uploadFileByPath(String path, Map<String, String> metaMap);

    /**
     * 上传文件
     *
     * @param obj         现只支持InputStream,byte[],String
     * @param fileExtName 文件后缀
     * @param metaMap     fastdfs参数
     * @return
     */
    UploadResult uploadFile(Object obj, String fileExtName, Map<String, String> metaMap);

    /**
     * 下载文件
     *
     * @param fileId 文件id
     * @return
     */
    byte[] downLoadFile(String fileId);


    int deleteFile(String fileId);
}
